package com.rose.redis._stand_alone_cache;

import cn.hutool.cache.Cache;
import cn.hutool.cache.impl.LFUCache;

/**
 * <p>
 * LFU算法实现：最少使用算法，判断条件：以数据的使用次数判断，删除使用次数最少的数据
 * </p>
 *
 * @author zhu.chen
 * @date 2021/1/13
 * @version 1.0
 */
public class LfuCacheTest {

    public static void main(String[] args) {
        Cache<String,String> cache = new LFUCache<>(3);
        cache.put("a", "1");
        cache.put("b", "2");
        cache.put("c", "3");
        // 加到这里时会清除访问次数最小的对象，因为a，b，c的访问次数都是1次，因此都清除，继而缓存中仅剩d，b
        cache.put("d", "4");
        cache.put("b", "5");
        System.out.println(cache.get("b"));
        /**
         * {d=CacheObj [key=d, obj=4, lastAccess=1610551420469, accessCount=0, ttl=0]}
         */
        System.out.println(cache.toString());
    }

}
